1. Field of the Invention
The present invention relates to the field of resource-constrained small footprint devices such as handheld computers, personal data assistants (PDAs), cellular phones, etc. More particularly, the present invention comprises a lightweight framework supporting shareable services in small footprint devices.
2. Description of the Related Art
The field of xe2x80x9csmartxe2x80x9d small footprint devices is growing and changing rapidly. Small footprint devices include handheld computers, personal data assistants (PDAs), cellular phones, global positioning system (GPS) receivers, game consoles, and many more such devices. These devices are becoming more intelligent and interconnected. Technologies such as Jini(trademark) from Sun Microsystems, Inc. and initiatives such as the Open Service Gateway Initiative (OSGI) are expanding the traditional concepts of computer networks to include small footprint devices.
This increased device interconnection has introduced a need for both new types of computing services and new ways to integrate computing services, both inter-device-based and intra-device-based services. A xe2x80x9cservicexe2x80x9d is an entity implemented within or accessible from a device that can be used by a person, an application, or another service. The concept of a service is broad and can be considered at many different scales. For example, services include familiar network-based services such as shared printing, email, telephony, etc. Services also include less familiar examples such as an energy management service which may control the power consumption of devices within a local network, a diagnostic service which allows a device to send information to a service technician when an error occurs, a health-monitoring service which immediately notifies health professionals of an emergency, etc.
Services also include modules or applications located and executable within a local machine or device. For example, local application programs may utilize a calendar service, a contact list service, a bookmark service, etc. In this example, an application program may use these services together to allow a user to select a person from the contact list, record an appointment time for a meeting with the person, and create a bookmark for easy access to the appointment entry.
It is becoming more common today to execute multiple services and applications together in a single small footprint device. However, since memory, processing power, and other resources are typically very limited in small footprint devices, a specialized lightweight software framework is necessary to achieve the desired integration of services and applications. It is also desirable that the framework be flexible and extendable enough to provide support for any types of services and applications for any kind of small footprint device. A further goal may be that the framework be compatible and integrated with off-device services such as services available to devices in a Jini(trademark) network. A lightweight, extendable containment framework for applications/services running on a small footprint device is described herein.
The present invention comprises a system and method to contain and manage program modules in a small footprint device. As used herein, a module is an executable software component. The invention comprises a containment framework for shareable modules. One embodiment of this containment framework is referred to as York 1.1. The containment framework enables module registration, lookup, instance tracking, etc. Modules in the containment framework may be used by other modules as services. The containment framework may be dynamic, allowing modules to be registered and loaded as desired or needed.
Modules may be grouped into parcels and managed as a unit. Parcels may serve several purposes. For example, much of a module""s runtime context may be determined by the parcel from which it originates. Also, applications may be managed by parcel, including installation and upgrade procedures. Also, the parcel system enables the support of multiple target development (i.e., development groups may use parcels to develop for different platforms or systems simultaneously without breaking reliance on common libraries).
As described above, a containment framework for a small footprint device should be lightweight. The present containment framework is able to function on a device with very little memory. For example, in one embodiment the containment framework may function on a device with only 300 KB writeable memory and still leave enough memory space for several modules to operate. In addition, the containment framework may be responsive on devices with low processing power, such as small footprint devices with 16 MHz-class chips.
One aspect of the containment framework which aids in achieving its lightweight status is that it is a non-hierarchical framework. Hierarchical containment can be a very useful feature in a framework, providing a standard way to group modules and allow them to discover and use each other""s services. However, hierarchical containment is generally expensive to achieve in terms of the resources required to implement it. The present containment framework provides many of the advantages associated with a hierarchical framework, without the usual overhead. Modules may intercept module lookup requests by other modules, thereby allowing them to customize the requesting module""s environment.
The containment framework may be based on common standards. For example, in one embodiment, the containment framework may be written in pure Java(trademark) and may be fully compliant with and executed in the PersonalJava(trademark) 3.0 application environment. PersonalJava(trademark) is a Java(trademark) application environment specifically designed for consumer devices for home, office, and mobile use. It comprises the Java(trademark) virtual machine (JVM) and a subset of the Java(trademark) Application Programming Interface (API), including core and optional APIs and class libraries. In addition, the PersonalJava(trademark) API includes specific features required by consumer applications in resource-limited environments. It is noted that the containment framework may also be comprised in hardware ROM or be compiled into native code.
Because the containment framework may be based on common standards, it may be ported easily to different device types and to devices made by different vendors, which greatly reduces time-to-market and development costs. The extendable architecture of the framework may also allow new modules to be introduced into the framework as needed or desired for different devices or services. The architecture may also allow for customizable and scaleable user interfaces. For example, the user interface component of an application may be swapped out as appropriate to the display type for different devices.
As described in more detail below, the containment framework maintains a list of loaded modules, as well as related system data. Modules normally access the module list or the system data only indirectly, e.g., by calling methods of a central framework instance. However, certain modules, referred to as system modules, may have the ability to access or modify the system data themselves. This type of direct data access to core data helps to keep the containment framework lightweight. Since system modules have access to the core system data, any necessary or desired extended functionality beyond the basic module management performed by the central framework instance may be introduced to a system by adding an appropriate system module. Thus, the containment framework is also highly extendable.
A system may comprise a set of core service modules available for other modules to use. These core services may include services such as the calendar, contact list, and bookmark services described in an example above. Together with such core services, the containment framework provides a complete architecture for running an integrated suite of applications and services on a small footprint device. For example, the Personal Applications suite available from Sun Microsystems, Inc. is built around one embodiment of the containment framework. The Personal Applications suite comprises an integrated set of compact, memory-efficient applications, including the Personal Applications Browser, the Personal Applications Email Client, and the Personal Organizer.
Although the system and method of the present invention may be associated with managing modules running on a small footprint device, it is noted that they are not limited to this use. To the contrary, many aspects of the present invention may be useful in systems that do not have such a large resource constraint. On the other hand, embodiments of the containment framework may be designed so that they are easily transferable to environments with an even greater constraint in resources than the small footprint devices described above. For example, an embodiment of the containment framework may run in an EmbeddedJava(trademark) application environment with little or no modification.